﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Generic.Contract;

namespace Contract.Business.Entity
{
    //Criado por : Gustavo
    //Data       : 10/25/2011 12:04:42 AM
    public class BECliente : BEGeneric
    {
        #region Atributos
        private string _Nome;
        private bool _Bloqueado;
        private string _Endereco;
        private string _Bairro;
        private string _Cidade;
        private string _UF;
        private string _CEP;
        private string _PontoReferencia;
        private string _TelResidencial;
        private string _TelResidencial2;
        private string _TelComercial;
        private string _Email;
        private DateTime _Nascimento;
        private string _Observacao;
        private BERegiaoEntrega _RegiaoEntrega;
        private int _CodigoRegiaoEntrega;
        private bool _DesejaReceberEmails;
        private short _NumeroContadorPizza;

        #endregion

        #region Propriedades
        public string Nome
        {
            get
            {
                return this._Nome;
            }
            set
            {
                if (this._Nome != value)
                {
                    this.SendPropertyChanging();
                    this._Nome = value;
                    this.SendPropertyChanged("Nome");
                }
            }
        }

        public bool Bloqueado
        {
            get
            {
                return this._Bloqueado;
            }
            set
            {
                if (this._Bloqueado != value)
                {
                    this.SendPropertyChanging();
                    this._Bloqueado = value;
                    this.SendPropertyChanged("Bloqueado");
                }
            }
        }

        public string Endereco
        {
            get
            {
                return this._Endereco;
            }
            set
            {
                if (this._Endereco != value)
                {
                    this.SendPropertyChanging();
                    this._Endereco = value;
                    this.SendPropertyChanged("Endereco");
                }
            }
        }

        public string Bairro
        {
            get
            {
                return this._Bairro;
            }
            set
            {
                if (this._Bairro != value)
                {
                    this.SendPropertyChanging();
                    this._Bairro = value;
                    this.SendPropertyChanged("Bairro");
                }
            }
        }

        public string Cidade
        {
            get
            {
                return this._Cidade;
            }
            set
            {
                if (this._Cidade != value)
                {
                    this.SendPropertyChanging();
                    this._Cidade = value;
                    this.SendPropertyChanged("Cidade");
                }
            }
        }

        public string UF
        {
            get
            {
                return this._UF;
            }
            set
            {
                if (this._UF != value)
                {
                    this.SendPropertyChanging();
                    this._UF = value;
                    this.SendPropertyChanged("UF");
                }
            }
        }

        public string CEP
        {
            get
            {
                return this._CEP;
            }
            set
            {
                if (this._CEP != value)
                {
                    this.SendPropertyChanging();
                    this._CEP = value;
                    this.SendPropertyChanged("CEP");
                }
            }
        }

        public string PontoReferencia
        {
            get
            {
                return this._PontoReferencia;
            }
            set
            {
                if (this._PontoReferencia != value)
                {
                    this.SendPropertyChanging();
                    this._PontoReferencia = value;
                    this.SendPropertyChanged("PontoReferencia");
                }
            }
        }

        public string TelResidencial
        {
            get
            {
                return this._TelResidencial;
            }
            set
            {
                if (this._TelResidencial != value)
                {
                    this.SendPropertyChanging();
                    this._TelResidencial = value;
                    this.SendPropertyChanged("TelResidencial");
                }
            }
        }

        public string TelResidencial2
        {
            get
            {
                return this._TelResidencial2;
            }
            set
            {
                if (this._TelResidencial2 != value)
                {
                    this.SendPropertyChanging();
                    this._TelResidencial2 = value;
                    this.SendPropertyChanged("TelResidencial2");
                }
            }
        }

        public string TelComercial
        {
            get
            {
                return this._TelComercial;
            }
            set
            {
                if (this._TelComercial != value)
                {
                    this.SendPropertyChanging();
                    this._TelComercial = value;
                    this.SendPropertyChanged("TelComercial");
                }
            }
        }

        public string Email
        {
            get
            {
                return this._Email;
            }
            set
            {
                if (this._Email != value)
                {
                    this.SendPropertyChanging();
                    this._Email = value;
                    this.SendPropertyChanged("Email");
                }
            }
        }

        public DateTime Nascimento
        {
            get
            {
                return this._Nascimento;
            }
            set
            {
                if (this._Nascimento != value)
                {
                    this.SendPropertyChanging();
                    this._Nascimento = value;
                    this.SendPropertyChanged("Nascimento");
                }
            }
        }

        public string Observacao
        {
            get
            {
                return this._Observacao;
            }
            set
            {
                if (this._Observacao != value)
                {
                    this.SendPropertyChanging();
                    this._Observacao = value;
                    this.SendPropertyChanged("Observacao");
                }
            }
        }

        public BERegiaoEntrega RegiaoEntrega
        {
            get
            {
                return this._RegiaoEntrega;
            }
            set
            {
                BERegiaoEntrega previousValue = this._RegiaoEntrega;
                if ((previousValue == null) || (!previousValue.Equals(value)))
                {
                    this.SendPropertyChanging();
                    this._RegiaoEntrega = value;
                    if (value != null)
                    {
                        this._CodigoRegiaoEntrega = value.Codigo;
                    }
                    else
                    {
                        this._CodigoRegiaoEntrega = default(int);
                    }
                    this.SendPropertyChanged("RegiaoEntrega");
                }
            }
        }

        public int CodigoRegiaoEntrega
        {
            get
            {
                return this._CodigoRegiaoEntrega;
            }
            set
            {
                if (this._CodigoRegiaoEntrega != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoRegiaoEntrega = value;
                    this.SendPropertyChanged("CodigoRegiaoEntrega");
                }
            }
        }

        public bool DesejaReceberEmails
        {
            get
            {
                return this._DesejaReceberEmails;
            }
            set
            {
                if (this._DesejaReceberEmails != value)
                {
                    this.SendPropertyChanging();
                    this._DesejaReceberEmails = value;
                    this.SendPropertyChanged("DesejaReceberEmails");
                }
            }
        }

        public short NumeroContadorPizza
        {
            get
            {
                return this._NumeroContadorPizza;
            }
            set
            {
                if (this._NumeroContadorPizza != value)
                {
                    this.SendPropertyChanging();
                    this._NumeroContadorPizza = value;
                    this.SendPropertyChanged("NumeroContadorPizza");
                }
            }
        }
        #endregion

        #region Métodos Override
        public override string ToString()
        {
            return this.Nome;
        }

        public override bool Equals(object obj)
        {
            try
            {
                return this.Codigo == ((BECliente)obj).Codigo;
            }
            catch (Exception)
            {
                return false;
            }
        }
        #endregion
    }
}
